﻿using System.Collections.ObjectModel;

namespace Sgr.DataCategories.Services
{
    /// <summary>
    /// 提供系统基础类别类型数据
    /// </summary>
    public class CategoryTypeProvider : ICategoryTypeProvider
    {
        /// <summary>
        /// 机构类型代码
        /// </summary>
        public const string F_ORGTYPE = "F_ORGTYPE";

        /// <summary>
        /// 人员规模代码
        /// </summary>
        public const string F_STAFF_SIZE = "F_STAFF_SIZE";

        /// <summary>
        /// 软件分类代码
        /// </summary>
        public const string F_SOFT_CLASSIFICATION = "F_SOFT_CLASSIFICATION";

        /// <summary>
        /// 软件类型代码
        /// </summary>
        public const string F_SOFT_TYPE = "F_SOFT_TYPE";

        // 静态且只读的预定义类别集合（线程安全，禁止外部修改）
        private static readonly IList<NameValue> _categoryTypes = new ReadOnlyCollection<NameValue>(new List<NameValue>
        {
            new NameValue("机构类型", F_ORGTYPE, "系统管理"),
            new NameValue("人员规模", F_STAFF_SIZE, "系统管理"),
            new NameValue("软件分类", F_SOFT_CLASSIFICATION, "IT资产管理"),
            new NameValue("软件类型", F_SOFT_TYPE, "IT资产管理")
        });

        /// <summary>
        /// 对外公开的静态只读集合（可直接用于静态访问）
        /// </summary>
        public static IList<NameValue> CategoryTypes => _categoryTypes;

        /// <summary>
        /// 获取所有预定义的类别类型列表
        /// </summary>
        /// <returns>包含系统预定义的类别类型集合（只读）</returns>
        public IList<NameValue> GetCategoryTypes()
        {
            return _categoryTypes;
        }
    }
}